home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / langs / xlisp2.1 / xldist00.zoo / README < prev    next >
Encoding:
Text File  |  1991-05-03  |  12.5 KB  |  320 lines

  1. This file edited from Niels Mayer's original README.
  2.  
  3. This file contains some of the information on Tom Almy's improved
  4. release of David Betz's XLISP 2.1:
  5.  
  6. Roadmap of files: (note -- text stolen from Almy's readme.1st file):
  7. * ./sources (directory):
  8.     Contains all the C source files as well as ststuff.c, the ST-
  9.         specific code.
  10.  
  11. * ./sources/etc make*, *stuf.c and *.asm files needed for compiling 
  12.     on MSDOS and other PC's.
  13.  
  14. * ./lsp (directory):
  15.     Contains all the xlisp example programs and initialization
  16.     files. Particularly important (and documented in the manual)
  17.     are init.lsp, common.lsp, and classes.lsp.
  18.     Also useful are Tom Almy's structure editor, repair.lsp,
  19.     and the pretty printer pp.lsp.
  20.  
  21. * ./doc (directory):
  22.     Contains the ASCII and postscript documentation files. The
  23.     ASCII version 'xlispdoc.txt' has underlines to highlight changes.
  24.     'xlispdoc.text' is the same but with all ^H_ sequences deleted
  25.     so you can read it with a text editor.
  26.  
  27. * ./doc/xlispdoc.text:
  28.     Same as ./doc/xlispdoc.txt but the ^H_ sequences have been
  29.         removed so that you can read the file with an editor. To
  30.     see find out about functionality in Almy's distribution,
  31.     print out xlispdoc.txt and note the underlined sections.
  32.  
  33. Graham Higgins                  |  gjh%ghiggins@hpl.hp.co.uk
  34. Hewlett-Packard Labs            |  gjh%ghiggins@hplb.hpl.hp.com
  35. Filton Road, Stoke Gifford      |  gjh%hplb.csnet@csnet-relay.arpa 
  36. Bristol, U.K.                   |  ...!mcvax!ukc!hplb!gjh          
  37. Tel: +44 272 799910 x24014      |  ghiggins@cix.compulink.co.uk
  38. Fax: +44 272 790554             |  al851@cwns16.ins.cwru.edu
  39. ------------------------------------------------------------------
  40. Disclaimer: My opinions above are exactly that, mine and opinions.
  41. ------------------------------------------------------------------
  42. ===============================================================================
  43. From: toma@tekgvs.LABS.TEK.COM (Tom Almy)
  44. Newsgroups: comp.lang.lisp
  45. Subject: Re: Is there a cheap, decent PCLisp Out There?
  46. Keywords: lisp, pc, ms, dos
  47. Message-ID: <8294@tekgvs.LABS.TEK.COM>
  48. Date: 19 Oct 90 21:19:07 GMT
  49. References: <CCM.90Oct15153120@DARWIN.CRITTERS.CS.CMU.EDU> <9281@milton.u.washington.edu> <1990Oct17.224606.26480@cbnewsc.att.com> <463@caslon.cs.arizona.edu>
  50. Reply-To: toma@tekgvs.LABS.TEK.COM (Tom Almy)
  51. Organization: Tektronix, Inc., Beaverton,  OR.
  52. Lines: 32
  53.  
  54. In article <463@caslon.cs.arizona.edu> shack@cs.arizona.edu (David Michael Shackelford) writes:
  55. >In article <9281@milton.u.washington.edu>, efowler@milton.u.washington.edu (Eric Fowler) writes:
  56. >> The subject line says it all-I need a (preferably)CommonLisp that will run 
  57. >> on a PC. This is mostly for self-teaching of LISP at home, and need not be 
  58. >> exotic.
  59.  
  60. >How about XLISP?  I think it's available on SIMTEL (maybe in its own directory)
  61. >It's not necessarily 100% CommonLisp, but you can't beat the price anywhere!
  62. >
  63. >It should do the job, our programming languages class uses
  64. >an XLISP dialect for the LISP section of the course.
  65.  
  66. I have an extensively modified XLISP 2.1 which has been molded more into
  67. CL and fixes numerous bugs in the standard XLISP distribution. The extension
  68. over the standard XLISP are obtained via compilation options.
  69.  
  70. Send a self-addressed, stamped mailer with a formatted high density floppy
  71. to:
  72.  
  73. Tom Almy
  74. 17830 SW Shasta Trail
  75. Tualatin, OR 97062
  76.  
  77. Atatch a note saying:
  78. 1. You want XLISP sources.
  79. 2. Any binaries you need (generic w/wo 80x87 and 80386 protected mode w. 80387
  80.     available).
  81. 3. Documentation as PostScript file, ASCII text file, or WordPerfect 5.1 file.
  82.  
  83. Tom Almy
  84. toma@tekgvs.labs.tek.com
  85. Standard Disclaimers Apply
  86.  
  87. ==============================================================================
  88. Niels' comment: this info was in file mods.txt:
  89. ==============================================================================
  90.  
  91.     Modifications made to XLISP 2.0
  92.  
  93.     Tom Almy
  94.  
  95. All repairs and additions my own unless crediting name is given.
  96.  
  97. Bug fixes are permanently installed. Other changes by conditional compilation.
  98.  
  99.  
  100. **********Bug fixes
  101.  
  102. STRCAT where aggregate size of argument strings is greater than 32k
  103. causes crash (16 bit integer systems)
  104.  
  105. MAKE-ARRAY creates bogus array for sizes 32768-65535, and arrays of
  106. size (mod size 65536) for larger sizes.  MAKE-ARRAY attempts to make
  107. negative sized arrays! (16 bit integer systems)
  108.  
  109. The following functions treat their numeric count argument modulo 65536: 
  110.     DOTIMES, AREF, and the AREF and NTH place forms of SETF.
  111.  
  112. "restore" corrupts system (argument stack not being reset, and modification
  113.         to CVPTR is needed for 8086 systems)
  114.  
  115. Any attempt to do more than one RESTORE in a session causes the error
  116.     "insufficient memory - segment".
  117.  
  118. Strings containing nulls cannot be read or printed.
  119. (Note, strcat has the same problem, but I have a new version, the
  120.  Common Lisp concatenate function, which will replace it.
  121.  
  122. NTH and NTHCDR fail for zero length (i.e. NIL) lists.
  123.  
  124. :DOWNCASE does not work with all compilers because of side effects in
  125.    tolower() in some C libraries.
  126.  
  127. Unnamed streams never survive a garbage collection (Paul A.W. van Niekerk).
  128.  
  129. (format nil ...) does not protect the unnamed stream it creates, it will
  130.    vanish during a GC. (Paul A. W. van Niekerk)
  131.  
  132. In XLISP 2.0, there seems to be a bug in (sort ... ...) due to some
  133.     unprotected pointers in sortlist() and splitlist() in file xllist.c. 
  134.     (Neal Holtz)
  135.  
  136. The functions SYMBOL-NAME, SYMBOL-VALUE, SYMBOL-PLIST, BOUNDP, and FBOUNDP
  137.     fail with the symbol NIL as the argument. Corrected to return
  138.     "NIL", nil, nil, t, and nil, respectively.
  139.  
  140. The function LAST returned the wrong value when its argment list ended with
  141.     a dotted pair.
  142.  
  143. ***********Functional Improvements (or minor bugs)
  144.  
  145. Uninterned symbols print with leading "#:".
  146.  
  147. Control and meta characters printed "raw" with prin1, now generate
  148. appropriate escape sequences.
  149.  
  150. Can now declare character literals for control and meta characters, using
  151. new escape sequences.( #\C-<char> for control characters, #\M-<char> for meta
  152. characters (msb set), #\M-C-<char> for meta-control characters, #\rubout for
  153. 0x7f).
  154.  
  155. Double quotes are now escaped when printed (i.e., (print "\"") would print
  156. as """).
  157.  
  158.  
  159. Invalid symbols can no longer be created with intern and make-symbol (such as 
  160.         symbol names containing control characters). Also, you can 
  161.         no longer make NIL, which was highly irregular! You can't change the
  162.     value of a constant (with set functions). Constants are T and keywords
  163.     which always evaluate to themselves.
  164.  
  165. (UNTRACE) now untraces all functions.
  166.  
  167. The key "T", meaning "otherwise" in the CASE function, 
  168.     used to be allowed at any position, when Common Lisp (and common 
  169.     sense) dictates it should only be at the end.
  170.  
  171. Functions which take the :end keyword argument now allow NIL
  172.     to mean "end of sequence" as in Common Lisp. Also 
  173.     MAKE-STRING-INPUT-STREAM and SUBSEQ end arguments accept 
  174.     NIL to mean "end of sequence".
  175.  
  176. (string <expr>) now makes a string from an integer as version 1.6 did, 
  177.     and the manual suggests.
  178.  
  179. SUBST and SUBLIS perform minimum structure copying, as required by Common
  180. Lisp.
  181.  
  182. EQUAL compares vectors element by element, as in Common Lisp, rather than just
  183. checking for EQ.
  184.  
  185. Added command line option -w for "don't load xlisp.wks workspace".  If
  186. xlisp.wks loaded at initialization time, init.lsp will not be loaded.
  187.  
  188. Added command line option -? to give usage message.
  189.  
  190. Code in *stuf.c changed so that xlisp runs with a "raw" terminal mode, 
  191. break off, and buffering for faster display.  If *DOS-INPUT* is non-nil,
  192. DOS is used to read input lines, which allows programs like CED to work, 
  193. and better operation of xlisp in a Epsilon process window.  But the control
  194. characters to special operations no longer work -- funtions must be called 
  195. instead:
  196.  
  197.     ^C    (top-level)
  198.     ^G    (clean-up)
  199.     ^P    (continue)
  200.     ^T    (room)
  201.     ^Z    at top level, (exit)
  202.  
  203. Improved formatting in FORMAT (Neal Holtz)
  204.  
  205. Lexical and functional environment of a call to DEFMETHOD is used during
  206. the methods evaluation (Niels Mayer).
  207.  
  208. Functions with names starting with "STRING" will accept a symbol as the string
  209.     argument, as in Common Lisp.
  210.  
  211. AREF will work on strings as well as arrays (Common Lisp compatibility).
  212.  
  213. SUBSEQ REVERSE REMOVE... DELETE... take sequence (CONS ARRAY or STRING)
  214.     arguments rather than just list arguments.
  215.  
  216. REMOVE... and DELETE... accept :start and :end keyword arguments
  217.  
  218. CHAR-CODE changed to mask off "parity" bit, thus returning only code values
  219. 0-127. This means that (code-char (char-code x)) succeeds for all characters 
  220. x.
  221.  
  222.  
  223. APPEND and NCONC modified to give error messages for improper arguments, 
  224. rather than just ignoring them.
  225.  
  226. ***********New Functions
  227.  
  228. ASIN, ACOS, and ATAN of XLISP 2.1 added.
  229.  
  230. DEFSTRUCT (and structures) of XLISP 2.1 added. Code modified so that
  231. keywords in structure printing and structure literals (i.e., #S() construct)
  232. have leading colon and structure literals do not evaluate arguments. Also 
  233. fixed bug that allowed referencing off end of structure if improper accessing 
  234. function used. 
  235.  
  236. (It seems that these are the only differences between 2.0 and 2.1)
  237.  
  238. The system identifies itself as 2.1 if these functions are included in the
  239. compile.
  240.  
  241. Reader macro #. evaluates following expression at read time.
  242.  
  243. STRCAT is eliminated (a macro is placed in init.lsp for backwards
  244. compatibility).  The replacement function is CONCATENATE which will
  245. concatenate sequences of any type(s) into a result sequence of any
  246. type.  It is used: (CONCATENATE <type> <seq1> [<seq2> ...]) where 
  247. type is the result type, one of CONS ARRAY or STRING.
  248.  
  249. *print-level* and *print-length* added.
  250.  
  251. A new function, which I call "GENERIC" was added.  This function takes one
  252. argument and converts the argument to an equivalent internally structured
  253. type that is more easily examined.  Types SYMBOL, OBJECT, and CLOSURE are
  254. returned as ARRAY.  Type UNNAMED-STRING is returned as a CONS.  Types CONS
  255. STRING, and ARRAY return copies of themselves.  Types FLONUM, FIXNUM, 
  256. CHARACTER, and NIL return themselves.  Types SUBR, FSUBR, and FILE-STREAM
  257. cause an error condition.
  258.  
  259. Objects have PNAME (print name) class instance variable, and Mikael 
  260. Pettersson's :PRIN1 method for better display of objects.
  261.  
  262. Functions MODE MOVE DRAW and COLOR added for crude graphics.
  263.  
  264. Improved file functionality. OPEN function accepts :element-type keyword
  265. (with values FIXNUM or CHARACTER) to allow binary files, :direction keyword
  266. may have value :io.  Added Common Lisp functions FILE-LENGTH and 
  267. FILE-POSITION.
  268.  
  269. Added Common Lisp functions: TIME ELT MAP POSITION-IF FIND-IF COUNT-IF
  270. EVERY SOME NOTEVERY NOTANY NREVERSE SEARCH and COERCE.
  271.  
  272. APPLYHOOK now implemented, and *APPLYHOOK* now works as well.
  273.  
  274.  
  275. ***********Other Stuff
  276.  
  277. Definitions of strings internally changed to "char" from "unsigned char",
  278. thus making C code look much cleaner. New macros getstringch and setstringch
  279. added to fetch and store (unsigned) characters into a string. This also
  280. made the code much more readable.
  281.  
  282. I'm trying to ANSI the definitions by adding function prototypes. It's not
  283. perfect yet!
  284.  
  285. evfun() modified to reduce C stack usage in recursive functions.  The local
  286. variable "name" replaced with "getname(fun)" where used; The call to xleval
  287. was replaced with the contents of xleval. The local variable "type" in 
  288. evform() was deleted since, although set, its value was never used.
  289.  
  290. Added improved garbage collection and performance enhancing macros of Johnny
  291. Greenblatt.
  292.  
  293. The values for ADEPTH and EDEPTH changed to more reasonable values
  294. (1000 and 650 respectively with a 16k stack). Befor the change, the processor
  295. stack would overflow first, causing a crash.  These values are compiler
  296. dependent, unfortunately.
  297.  
  298. The recursion flag (rflag) argument for xlread was deleted since it is no
  299. longer used.  In xlread.c, the macro functions obtain but never use the macro
  300. character "mch".  This local variable is now deleted.
  301.  
  302. All refereces to os?getc and os?putc changed to fgetc and fputc.  When
  303. appropriate, fread or fwrite have been substituted for improved performance.
  304.  
  305. Compilation options put in for all extensions.
  306.  
  307. No documentation for function 'send-super', which exists instead of the 
  308. two conflicting techniques in the documentation "A message can also be sent...
  309. but the method lookup starts with the object's superclass" and the message
  310. :SENDSUPER.  The instance variables for objects of class CLASS are not
  311. described.
  312.  
  313. Documentation revised to match changes, and expanded where not clear.
  314.  
  315.  
  316. Some extern declarations added to get past linting of ANSI compilers.
  317. Added makefiles for Zortech C (Datalight C), Metaware High C 386, and
  318. Microway NDP C-386 compilers. Some additional asm source files exist for the
  319. two 386 compilers.
  320.